<?php

// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');

// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
$mainconfig = array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'我的应用程序',
	// 使用的字符集
	'charset' => 'utf-8',
	'language' => 'zh',
    // 如何在应用程序处理请求之前执行一段操作 当然这个function方法要存在index.php
	// 'onBeginRequest' => 'function',
	'aliases' => array(
		'frontend' => dirname(__FILE__) . '/../..' . '/frontend',
		'common' => dirname(__FILE__) . '/../..' . '/common',
		'backend' => dirname(__FILE__) . '/../..' . '/backend',
		//'vendor' => 'common.lib.vendor'
	),
	// 载入日志组件 preloading 'log' component
	'preload'=>array('log'), 
	// 使用自己载入Js文件方法包 报错
	/*'clientScript' => array(
            'class'    => 'CClientScript',
            'packages' => require_once('packages.php')
    ),*/
	// 自动加载model component类的目录autoloading model and component classes
	'import'=>array(
	    'application.models.app.*',
		'application.models.che.*',
		'application.models.cms.*',
		'application.components.*',
		'application.vendors.*',
		'application.library.*',
		'application.modules.user.models.*',
		'application.modules.user.components.*',
		'application.modules.srbac.models.*',
		'application.modules.srbac.controllers.SBaseController',
		//'application.modules.srbac.components.*',
	),
	// 'onBeginRequest' => array('MyEventHandler', 'MyEventHandlerMethod'),
    'defaultController'=>'index',
	'modules'=>array(
			// class AdminModule extends CWebModule 
	        // modules.Admin.controllers.IndexController.php
	        // 访问 http://www.webapp.cc/?r=admin/index/index
	        //'yiiuser'=>array(),
	        'dash'=>array(),
	        'srbac'=>array(
	              'userclass'=>'User',
	              'userid'=>'id',
	              'username'=>'username',
	              'delimeter'=>'@',
	              'debug'=>true,
	              'pageSize'=>10,//Srbac模块中的分页设置
	              'superUser'=>'admin',//最高权限管理者名称
	              'css'=>'srbac.css',
	              'layout'=>'application.views.layouts.main',
	              'notAuthorizedView'=>'srbac.views.authitem.unauthorized',//非自动验证视图
	              'alwaysAllowed'=>array('UserLogin','UserLogout','UserIndex','UserAdmin','SiteError','SiteContact'),//默认不分权限管理的action动作
	              'userActions'=>array('Show','View','List'),//User 默认的动作
	              'listBoxNumberOfLines'=>15,
	              'imagesPath'=>'srbac.images',//目录是Srbac,这里值用小写
	              'imagesPack'=>'noia',
	              'iconText'=>true,
	              'header'=>'srbac.views.authitem.header',
	              'footer'=>'srbac.views.authitem.footer',
	              'showHeader'=>true,//显示视图头部
	              'showFooter'=>true,//显示视图尾部
	              'alwaysAllowedPath'=>'srbac.components',//默认加载Srbac的核心文件地址
	        ),
	                
			//'admin'=>array(),
			
	        //'mysql'=>array(),
	        
			//登录 http://www.webapp.cc/index.php?r=/user/login	
	        //访问 http://www.webapp.cc/?r=user
			/*'user'=>array(
					# encrypting method (php hash function)
					'hash' => 'md5',
			
					# send activation email
					'sendActivationMail' => true,
			
					# allow access for non-activated users
					'loginNotActiv' => false,
			
					# activate user on registration (only sendActivationMail = false)
					'activeAfterRegister' => false,
			
					# automatically login from registration
					'autoLogin' => true,
			
					# registration path
					'registrationUrl' => array('/user/registration'),
			
					# recovery password path
					'recoveryUrl' => array('/user/recovery'),
			
					# login form path
					'loginUrl' => array('/user/login'),
			
					# page after login
					'returnUrl' => array('/user/profile'),
			
					# page after logout
					'returnLogoutUrl' => array('/user/login'),
					// enable cookie-based authentication					
					// 'allowAutoLogin'=>true
			),*/
	    // uncomment the following to enable the Gii tool
		
		'gii'=>array(			
			'class'=>'system.gii.GiiModule',
			'password'=>'123456',
			// If removed, Gii defaults to localhost only. Edit carefully to taste.
			'ipFilters'=>array('127.0.0.1','::1'),
		),
		
		// 'module1'=>array(), //访问module1地址 http://localhost/webapp/?r=module1
	),
	//'behaviors' => array(),
	
	// 使用行为behaviors=>array('module')自动导入module模块,config/main的modules不需要加对应的module名。可以在数据库中配置
	// 相当于：Yii::app()->attachBehavior('module','application.components.behaviors.ModuleBehavior');
	// 'behaviors' => array('module'=>array('class'=>'application.models.behaviors.ModuleBehavior')),
	
	// controllers mappings
	//'controllerMap' => array(),
	
	// application components 应用程序组件,只能组件才可以用Yii::app()->db形式来访问
	'components'=>array(
	'request'=>array(
			// 如果防止post跨站攻击
			'enableCsrfValidation'=>true,
			// 防止Cookie攻击
			'enableCookieValidation'=>true,
	),
	    /*// assets,参考www.yiiframework.com/doc/api/CAssetManager
	       'assetManager'=>array(
		   // 改变磁盘上的路径
		   'basePath'=>dirname(__FILE__).'/../../assets/',
		   // 改变url
		   'baseUrl'=>'/web/assets/'
	    ),*/
	    /*'clientScript' => array(
			'scriptMap' => array(
					'bootstrap.min.css' => false,
					'bootstrap.min.js' => false,
					'bootstrap-yii.css' => false
			)
	    ),*/
	    'authManager'=>array(
			'class'=>'application.modules.srbac.components.SDbAuthManager',
			//'class'=>'SDbAuthManager',
			//'class'=>'CDbAuthManager',
			'defaultRoles' => array (
					'guest'
			),
			'connectionID'=>'db',
			'itemTable'=>'authitem',
			'assignmentTable'=>'authassignment',
			'itemChildTable'=>'authitemchildren'
	    ),
		'user'=>array(
			// enable cookie-based authentication
			'class'=>'WebUser',
			'allowAutoLogin'=>true,
			'loginUrl'=>array('/user/login')
		),
		
		// uncomment the following to enable URLs in path-format
		/*
		'urlManager'=>array(
			'urlFormat'=>'path',
			'showScriptName'=>false,
			'urlSuffix'=>'.html',
			'rules'=>array(
				'<controller:\w+>/<id:\d+>'=>'<controller>/view',
				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
			// 'rules'=>require(dirname(__FILE__).'/routes.php'),
		),
		*/
	    /*'db'=>array(
			'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
		),*/
		
	    //CMap::mergeArray(require(dirname(__FILE__).'/db.php'),require(dirname(__FILE__).'/dbwebche.php')),
   /*
    * CDbCache 实现了一个将缓存数据存储在数据库的应用组件.
    * CDbCache 将缓存数据存储在一个叫 cacheTableName 的数据表。
    * 如果表不存在，那么它会自动创建。通过设置 autoCreateCacheTable 为false，
    * 你可以自定义创建一个数据表。
    * CDbCache 依靠 PDO 去访问数据库。默认上，它会使用在应用runtime文件夹下面的 SQLite3 数据库。
    * 你也可以指定 connectionID，它使用数据库应用组件访问数据库。
    * Yii::app()->dbcache 访问
    */
		'dbcache'=>array(
		   // 在执行Yii::app()->dbcache->set("persons",$persons,60);之前看看Yii::app()->db->active的值是true还是false?
		   'class'=>'system.caching.CDbcache',
		   'connectionID'=>'db',          // 这里使用到mysql数据库，默认sqlite 
		   // 'autoCreateCacheTable'=>false,
		   'cacheTableName'=>'wdb_cache', //db cache使用的数据表
		   'autoCreateCacheTable'=>false, //CDbCache 将缓存数据存储在一个叫 cacheTableName 的数据表。true如果表不存在，那么它会自动创建
		),
		/**
		* File缓存设置
		* Yii::app()->filecache 调用
		*/
		'filecache'=>array(
           'class'=>'system.caching.CFileCache',
           'cachePath'=> './protected/runtime/cache/',
           //我们使用CFileCache实现缓存,缓存文件存放在runtime文件夹中
           'directoryLevel'=>'2',   //缓存文件的目录深度
        ),
		/**
		* Memche缓存设置
		* Yii::app()->memcache 调用
		*/    
		'memcache'=>array(
		  'class'=>'system.caching.CMemCache',
		  'servers'=>array(
		     array('host'=>'127.0.0.1', 'port'=>11211, 'weight'=>60)),
		     /*array('host2'=>'127.0.0.1', 'port'=>11211, 'weight'=>60)),*/     
        ),
    
        // 使用memcache来保存session
        'session'=>array(
          'sessionName'=>'PHPSESSID',
          'class'=>'CCacheHttpSession',
          'cacheID'=>'memcache',//组件ID Yii::app()->memcache
          'autoStart'=>true,
          'cookieMode'=>'only',
          // 'savePath'=>'ddd',
          // 'cookieParams' => array('lifetime'=>'3600','path'=>'/','domain'=>'.duiduila.com','httponly'=>'1'),
          'timeout'=>1800
        ),
        // 如何在程序有错的时候跳到指定的action 在此action中可以能过Yii::app()->errorHandler->error获得错误信息
        'errorHandler'=>array(
			// use 'site/error' action to display errors
			'errorAction'=>'site/error',
		),
		
		// 维护程序时，这样子所有的请求转发到一个地方
		'catchAllRequest'=>array('site/all'),
		
		/*'controllerMap' => array(
           'cron' => 'ext.runactions.controllers.RunActionsController',
        ),*/
		/*
		 * log组件的核心是CLogRouter，如果想使用多种方式记录日志，就必须配置routes，可用的route有：
         * CDbLogRoute: 将信息保存到数据库的表中。
         * CEmailLogRoute: 发送信息到指定的 Email 地址。
         * CFileLogRoute: 保存信息到应用程序 runtime 目录中的一个文件中。
         * CWebLogRoute: 将 信息 显示在当前页面的底部。
         * CProfileLogRoute: 在页面的底部显示概述（profiling）信息。
         */
		// 如何使用theme 如何得到前前使用的主题Yii::app()->theme 得到主题名字Yii::app()->theme->name; themes文件夹和protected是同级的		
		'theme'=>'classic',		
		'log'=>array(		
			'class'=>'CLogRouter',// 处理记录信息的类
			// 如何记录$_GET,$_SESSION等信息，在以上的routes中各个配置中加上 log配置中的level设置不对，可能会得不到日志信息			
			'routes'=>array(
				array(
					'class'=>'CFileLogRoute',
					'logFile'=>'application.log.'.date('Y-m-d').'.log',
					'levels'=>'error, trace',
					//'levels' => CLogger::LEVEL_WARNING,
				    /*'filter'=>'CLogFilter',
				    'filter'=> array(
				    		'class' => 'CLogFilter',
				    		'logUser' => false,
				    		'logVars' => array('_GET'),
				    ),*/				    
				),                
                array(
                    'class'=>'CWebLogRoute',
         	        'levels'=>'error, trace',//vardump ‘trace,info,profile,warning,error’,
         	        'enabled' =>YII_DEBUG,
         	        'categories' => 'system.*',  //  可配置成(*,'system.*') 只显示关于数据库信息,包括数据库连接,数据库执行语句
         	        // 'except'=>'system.db.ar.*',  // shows all db level logs but nothing in the ar
         	        // 'except'=>'system.CModule.*' // Will email everything except any CModule logs         	        
                    // This is self-explanatory right? but also works in Chrome!
                    // 'levels'=>'trace',      // 级别为trace
                    // 'levels' => CLogger::LEVEL_PROFILE,                    
                    // 'categories'=>'vardump',// echo Yii::trace(CVarDumper::dumpAsString(string|array|object),'vardump');
         	        'showInFireBug'=>YII_DEBUG,
         	        'ignoreAjaxInFireBug' => true,         	        
                ),
               // 把日志记录到数据库
               array(
                    'class'=>'CDbLogRoute',
                    'levels'=>'error, warning, info',//vardump
                    'enabled' =>YII_DEBUG,        // 是否开启
                    'connectionID'=>'db',         // 使用db组件 使用sqlite数据库文件地址protected/runtime/log-YiiVersion.db.
                    'logTableName'=>'wdb_logs',// 日志数据表
                    'autoCreateLogTable'=>true,  // 自动创建日志数据表
                 ),
                array(
         		    'class'=>'CProfileLogRoute',
         		    'enabled'=> false,//CWebLogRoute: 将信息显示在当前页面的底部,加上这句就可以查看SQL了.
                ),
				// uncomment the following to show log messages on web pages
				/*
				array(
					'class'=>'CWebLogRoute',
				),
				*/
                //YII 调试扩展，提供强大的调试功能，在页面右上角显示图标
                array(
                		'class'=>'application.vendors.yii-debug-toolbar.YiiDebugToolbarRoute',
                		'ipFilters'=>array('127.0.0.1','192.168.1.215','192.168.3.10','192.168.7.227','192.168.6.148','ework.teamtop.tt'),
                		'enabled'=>false,
                ),
			),
		),
	),

	// application-level parameters that can be accessed
	// 使用 Yii::app()->params['paramName']
	'params'=>array(
		// this is used in contact page
		'authkey'=>'a%$ba*c',
		'adminEmail'=>'webmaster@example.com',
		'settings'=>'',
		// 'variables'=>CMap::mergeArray(require(dirname(__FILE__).'/params.php'),require(dirname(__FILE__).'/constant.php'))
	),
	
	// 注意：你也可以将配置文件分为多个文件
	// 例如： db.php, params.php 等等。	
	// 你可以这样做：'params'=>require(dirname(__FILE__).'/params.php'),
	/*
	 * return CMap::mergeArray(
	 * require(dirname(__FILE__).'/main.php'),
	 * array());
	 */
	 // return CMap::mergeArray();
	 // CMap::mergeArray(array('author'=>'hexiao'),require(dirname(__FILE__).'/constant.php')),
);
$dbconfig = require(dirname(__FILE__).'/db.php');
return CMap::mergeArray($mainconfig, $dbconfig);